import tkinter as tk
from tkinter import ttk
import logging
from .ocr_tab import OCRTab
from .gpu_ocr_tab import GPUOCRTab
from .export_tab import ExportTab
from .tracking_tab import TrackingTab
from .check_tab import CheckTab

class MainWindow:
    def __init__(self, root):
        self.root = root
        self.root.title("快递单文字识别系统")
        self.root.geometry("1000x900")
        
        # 设置样式
        self.style = ttk.Style()
        self.style.configure('TButton', padding=5)
        self.style.configure('TLabel', padding=5)
        self.style.configure('TNotebook', background='white')
        self.style.configure('TNotebook.Tab', padding=[10, 5])
        
        # 创建主框架
        self.main_frame = ttk.Frame(root, padding="10")
        self.main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        # 创建标签页
        self.notebook = ttk.Notebook(self.main_frame)
        self.notebook.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
        
        # 创建并添加CPU版本OCR识别标签页
        self.ocr_tab = OCRTab(self.notebook)
        self.notebook.add(self.ocr_tab, text="CPU识别")
        
        # 创建并添加GPU版本OCR识别标签页
        self.gpu_ocr_tab = GPUOCRTab(self.notebook)
        self.notebook.add(self.gpu_ocr_tab, text="GPU识别")
        
        # 创建并添加导出Excel标签页
        self.export_tab = ExportTab(self.notebook)
        self.notebook.add(self.export_tab, text="导出Excel")
        
        # 创建并添加物流查询标签页
        self.tracking_tab = TrackingTab(self.notebook)
        self.notebook.add(self.tracking_tab, text="物流查询")
        
        # 创建并添加核对信息标签页
        self.check_tab = CheckTab(self.notebook)
        self.notebook.add(self.check_tab, text="核对信息")
        
        # 配置网格权重
        self.root.grid_rowconfigure(0, weight=1)
        self.root.grid_columnconfigure(0, weight=1)
        self.main_frame.grid_rowconfigure(0, weight=1)
        self.main_frame.grid_columnconfigure(0, weight=1)
    
    def update_status(self, message):
        """更新状态栏消息"""
        self.status_var.set(message)
        logging.info(message) 